package com.mzx.javase.yichang;

import java.io.File;

/**
 * @Description:异常类
 * @Date: 2022/2/28 15:07
 * @Author: MarKing
 */

public class Test1 {
    //异常：在程序运行的时候，发生不正常的事件，导致程序的异常终止
    //异常的分类，大致分为错误和异常
    public static void main(String[] args) {
        //除0异常
        int a = 0;

        try {
            a = 10/0;
            System.out.println("111111");
            int[] ints = new int[1024 * 1024 * 1024*1024*1024*1024];
            System.out.println("数组初始化成功");
        } catch (Exception e) {
            e.printStackTrace();
        }
        //try,catch语句块中，把容易发生异常的语句段放到try中，catch用来捕捉异常信息，当try中语句发生异常时，会直接跳入到catch语句中执行，
        //再继续执行try\catch之外正常的代码;finally语句可有可无，finally语句是最后执行的，一般用于释放资源、删除临时文等
        //一个try可以匹配多个catch，catch捕获的异常应该从小到大顺序
        System.out.println(a);
        System.out.println("哈哈哈哈哈");
        /**
         * 当一个方法声明时用throws抛出异常类之后，调用它方法的时候处理方法有两个：
         * 1、继续向上抛，层级上抛，最后由jvm去处理，jvm会默认异常处理(打印栈追踪信息)
         * 2、自己处理，由try...catch...语句块处理异常
         */
        div(1, 0);
    }

    public static int div(int x, int y) {
        if (y == 0) {
            throw new ArithmeticException("除数不能为0");
        }
        return x / y;
    }
}
